#define _CRT_SECURE_NO_WARNINGS 1

//#include<iostream>
//using namespace std;
//
//int main()
//{
//	int arr[] = { 0 };
//	int count = 0;
//	for (int i = 100; i < 1000; i++)
//	{
//		for (int j = 10; j < 34; j++)
//		{
//			if (j * j == i)
//			{
//				int a = i % 10;
//				int b = i / 100;
//				int c = (i / 10) % 10;
//				if ((a == b) || (b == c) || (a == c))
//				{
//					cout << i<<" ";
//					count++;
//				}
//			}
//		}
//	}
//	cout <<"\n" << count << endl;
//	return 0;
//}


//#include<iostream>
//#include<string>
//using namespace std;
//
//int main() {
//	string str;
//	getline(cin, str);
//	int i = 0, count = 0;
//	while (i <= str.length()) {
//		if (str[i] == ' ')
//			count++;
//		i++;
//	}
//	count++;
//	cout << count << endl;
//	return 0;
//}


//#include <iostream>
//#include <stdio.h>
//#include <math.h>
//using namespace std;
//
//int isSquere(int x)
//{
//    double y = (double)x;
//    double temp = sqrt(y);
//    int i = (int)temp;
//    if (i * i == x) {
//        return 1;
//    }
//    else {
//        return 0;
//    }
//}
//
//int isTwoSame(int x)
//{
//    int digit0 = x % 10;
//    int digit1 = (x / 10) % 10;
//    int digit2 = x / 100;
//    return(digit0 == digit1 || digit0 == digit2 || digit1 == digit2); 
//}
//int main()
//{
//    for (int i = 100; i < 1000; ++i) {
//        if (isSquere(i) && isTwoSame(i)) 
//        {
//            printf("%d ", i);
//        }
//    }
//    return 0;
//}



# include <stdio.h>
# include <string.h>

int main()
{
    char str[9][10];
    for (int i = 0; i < 9; i++) scanf("%s", str[i]);
    for (int i = 0; i < 8; i++)
    {
        for (int j = i + 1; j < 9; j++)
        {
            if (strcmp(str[i], str[j]) > 0)
            {
                char tmp[10];
                strcpy(tmp, str[i]);
                strcpy(str[i], str[j]);
                strcpy(str[j], tmp);
            }
        }
    }
    for (int i = 0; i < 9; i++) printf("%s ", str[i]);
    return 0;
}


